# lambda 参数列表（可有可无）： 表达式（必须有返回值，有且只有一个）
# 也叫匿名函数
# 作用：简化代码，节约内存

# 无参
f1 = lambda : 100
print(f1)  # <function <lambda> at 0x000001D84CED7EE0> 内存地址
print(f1())  # 100

# 单个参数
f2 = lambda a : a*2
print(f2(3))

# 多参数 用逗号隔开
f3 = lambda a, b: a+b
print(f3(1, 3))

# 默认参数
f4 = lambda a, b=100: a*b
print(f4(10))

# 可变参数
f5 = lambda *args: args
print('hhh', 12, 'test')

# 可变关键字参数
f6 = lambda **kwargs : kwargs
print(f6(name='xiaomei', gender='男', age=11))


# 列表数据按字典key的值排序
students = [
    {'name':'Tom', 'age': 20},
    {'name':'Rose', 'age': 10},
    {'name':'Jack', 'age': 30},
]

# 按name值升序排列
students.sort(key=lambda x: x['name'])
print(students)

# 按name值升序排列
students.sort(key=lambda x: x['name'], reverse=True)
print(students)

# 按age值升序排列
students.sort(key=lambda x: x['age'])
print(students)

# 按age值升序排列
students.sort(key=lambda x: x['age'], reverse=True)
print(students)
